export const getYMD = () => {
  let myDate = new Date();
  let myYear = myDate.getFullYear(); // 获取完整的年份(4位,1970-????)
  let myMonth = myDate.getMonth() + 1; // 获取当前月份(0-11,0代表1月)
  let myToday = myDate.getDate(); // 获取当前日(1-31)
  myMonth = myMonth > 9 ? myMonth : "0" + myMonth;
  myToday = myToday > 9 ? myToday : "0" + myToday;
  let nowDate = myYear + "-" + myMonth + "-" + myToday;

  return nowDate;
};

export const getDateNow = (date: number = 0) => {
  const futureDate = new Date();
  const now = new Date(futureDate);
  now.setMonth(now.getMonth() + date);
  const year = now.getFullYear();
  const month = String(now.getMonth() + 1).padStart(2, "0");
  const day = String(now.getDate()).padStart(2, "0");
  const hours = String(now.getHours()).padStart(2, "0");
  const minutes = String(now.getMinutes()).padStart(2, "0");
  const seconds = String(now.getSeconds()).padStart(2, "0");
  const formattedDate = `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;
  return formattedDate;
};

// 计算当月至今的天数
export function getDaysInCurrentMonth() {
  const today = new Date();
  const currentMonth = today.getMonth(); // 当前月份（0-11）
  const currentYear = today.getFullYear(); // 当前年份

  // 获取当前月的第一天
  const firstDayOfMonth = new Date(currentYear, currentMonth, 1);
  // 获取当前日期
  const currentDate = today.getDate();

  // 计算距今的天数
  const daysInCurrentMonth = currentDate - firstDayOfMonth.getDate() + 1; // 加1是为了包含今天

  return daysInCurrentMonth;
}

// 计算本周天数
export const weekDay = () => {
  // 获取今天的日期
  let today = new Date();

  // 获取今天是本周的第几天（0表示星期天，6表示星期六）
  let dayOfWeek = today.getDay();

  // 计算从本周的第一天（周一）到今天的天数
  let daysFromMonday = dayOfWeek === 0 ? 7 : dayOfWeek; // 如果今天是星期天（getDay() 返回 0），我们需要将其视为第7天

  return daysFromMonday;
};

// 季度天数
export function getDaysSinceSeasonStart() {
  const today = new Date();
  const year = today.getFullYear();

  // 判断当前季节并设置季节开始日期
  let seasonStart;

  // 计算春季、夏季、秋季和冬季的开始日期
  if (today >= new Date(year, 2, 20) && today < new Date(year, 5, 21)) {
    // 春季 3月20日到6月20日
    seasonStart = new Date(year, 2, 20); // 春季开始日期
  } else if (today >= new Date(year, 5, 21) && today < new Date(year, 8, 22)) {
    // 夏季 6月21日到9月22日
    seasonStart = new Date(year, 5, 21); // 夏季开始日期
  } else if (today >= new Date(year, 8, 22) && today < new Date(year, 11, 21)) {
    // 秋季 9月22日到12月21日
    seasonStart = new Date(year, 8, 22); // 秋季开始日期
  } else {
    // 冬季 12月21日到3月20日
    seasonStart = new Date(year, 11, 21); // 冬季开始日期
  }

  // 计算天数差
  const timeDifference = today - seasonStart;
  const daysSinceSeasonStart = Math.floor(timeDifference / (1000 * 60 * 60 * 24));

  return daysSinceSeasonStart;
}

// 本年天数
export function getDaysSinceStartOfYear() {
  const today = new Date();

  // 获取当前年份
  const year = today.getFullYear();

  // 获取当前年1月1日的日期
  const startOfYear = new Date(year, 0, 1); // 0表示1月

  // 计算时间差，得到毫秒差
  const timeDifference = today - startOfYear;

  // 转换为天数（毫秒 -> 天）
  const daysSinceStartOfYear = Math.floor(timeDifference / (1000 * 60 * 60 * 24));

  return daysSinceStartOfYear;
}

// 上月的天数
export function getDaysInLastMonth() {
  const today = new Date();

  // 获取当前年份和月份
  const year = today.getFullYear();
  const month = today.getMonth(); // 当前月（0-11, 0代表1月）

  // 获取上个月的最后一天
  const lastMonthDate = new Date(year, month - 1, 0); // 0表示上个月的最后一天

  // 获取上个月的天数
  const daysInLastMonth = lastMonthDate.getDate(); // 获取当月的日期（即天数）

  return daysInLastMonth;
}

// 上季度天数
export function getLastQuarterDays() {
  // 获取当前日期
  const today = new Date();

  // 获取当前月份
  const currentMonth = today.getMonth() + 1; // getMonth() 返回0-11，因此 +1

  let startDate, endDate;

  // 根据当前月份确定上季度的起始和结束日期
  if (currentMonth >= 1 && currentMonth <= 3) {
    // 当前是第一季度，则上季度是去年的第四季度
    startDate = new Date(today.getFullYear() - 1, 9, 1); // 去年的10月1日
    endDate = new Date(today.getFullYear() - 1, 11, 31); // 去年的12月31日
  } else if (currentMonth >= 4 && currentMonth <= 6) {
    // 当前是第二季度，则上季度是第一季度
    startDate = new Date(today.getFullYear(), 0, 1); // 1月1日
    endDate = new Date(today.getFullYear(), 2, 31); // 3月31日
  } else if (currentMonth >= 7 && currentMonth <= 9) {
    // 当前是第三季度，则上季度是第二季度
    startDate = new Date(today.getFullYear(), 3, 1); // 4月1日
    endDate = new Date(today.getFullYear(), 5, 30); // 6月30日
  } else {
    // 当前是第四季度，则上季度是第三季度
    startDate = new Date(today.getFullYear(), 6, 1); // 7月1日
    endDate = new Date(today.getFullYear(), 8, 30); // 9月30日
  }

  // 计算上季度天数
  const timeDifference = endDate - startDate;
  const daysInLastQuarter = timeDifference / (1000 * 3600 * 24); // 转换为天数

  return daysInLastQuarter;
}

// 上年
export function getDaysInLastYear() {
  const currentYear = new Date().getFullYear(); // 获取当前年份
  const lastYear = currentYear - 1; // 上一年

  // 判断是否是闰年
  const isLeapYear = (year: any) => {
    return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;
  };

  // 计算上一年的天数
  const daysInLastYear = isLeapYear(lastYear) ? 366 : 365;

  return daysInLastYear;
}
